package com.zbkj.crmeb.merchant.api.service;

import java.util.List;

import com.zbkj.crmeb.store.request.StoreProductCrmebRequest;
import org.springframework.web.multipart.MultipartFile;

import com.common.CommonPage;
import com.common.PageParamRequest;
import com.github.pagehelper.PageInfo;
import com.zbkj.crmeb.category.vo.CategoryTreeVo;
import com.zbkj.crmeb.front.request.IndexStoreProductSearchRequest;
import com.zbkj.crmeb.front.request.ProductRequest;
import com.zbkj.crmeb.front.response.ProductDetailResponse;
import com.zbkj.crmeb.front.response.ProductResponse;
import com.zbkj.crmeb.front.response.StoreProductReplayCountResponse;
import com.zbkj.crmeb.store.model.StoreProduct;
import com.zbkj.crmeb.store.response.StoreProductDetailNormResponse;
import com.zbkj.crmeb.store.response.StoreProductReplyResponse;
import com.zbkj.crmeb.store.response.StoreProductResponse;

/**
* @author Mr.Zhang
* @Description IndexService 接口
* @since 2020-04-13
*/
public interface MerProductService {
    CommonPage<ProductResponse> getIndexProduct(IndexStoreProductSearchRequest request, PageParamRequest pageParamRequest, Integer leaderId);

    List<CategoryTreeVo> getCategory();

    CommonPage<ProductResponse> getList(ProductRequest request, PageParamRequest pageParamRequest) throws Exception;

    CommonPage<ProductResponse> getListByTuSou(MultipartFile targetImage, ProductRequest request, PageParamRequest pageParamRequest, Integer leaderId) throws Exception;

    StoreProductDetailNormResponse getDetailNorm(Integer id,Integer merId,Integer activityId, String groupId);
    
    ProductDetailResponse getDetail(Integer id,Integer merId,Integer activityId, String groupId);

    PageInfo<StoreProductReplyResponse> getReplyList(Integer id, Integer type, PageParamRequest pageParamRequest);

    StoreProductReplayCountResponse getReplyCount(Integer id);

    String getPacketPriceRange(StoreProductResponse storeProductResponse,boolean isPromoter);

    Integer getStockCount(Integer productId, String sourceSkuId, String size);

    void updateProductByNow(StoreProduct storeProduct);

    CommonPage<ProductResponse> getShopProduct(IndexStoreProductSearchRequest request, PageParamRequest pageParamRequest);

    List<ProductResponse> getProductList(IndexStoreProductSearchRequest request, PageParamRequest pageParamRequest, Integer leaderId);

    CommonPage<ProductResponse> getBestProductList(IndexStoreProductSearchRequest request, PageParamRequest pageParamRequest);

    /**
     * 
     * @author cyz
     * @date 2021/4/9 11:31
 * @param request
 * @param pageParamRequest
 * @return com.common.CommonPage
     */
    CommonPage selectZoneProductList(ProductRequest request, PageParamRequest pageParamRequest);

    void saveProduct(StoreProductCrmebRequest storeProductCrmebRequest, StoreProduct storeProduct, Integer stock);

    CommonPage<ProductResponse> getListByBarcode(ProductRequest request, PageParamRequest pageParamRequest) throws Exception;
}